package tree_util;

import com.opensymphony.xwork2.ActionSupport;
import db_tool.DBConnection;
import db_tool.LogTool;
import db_tool.TimeFormat;
import org.apache.struts2.ServletActionContext;

import java.io.File;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

/**
 * 添加、更新、删除	卵样本
 * */
public class Op_FishEggs extends ActionSupport {

	private String flag;		//区分操作
	
	private final static String START = "FSE";				//主键、照片 开头
	
	private static String PATH = "";					//照片在服务器上的路径("|"隔开)
	
	private String SampleID;
	private String Period;
	private String Diameter;
	private String EMDiameter;
	private String PigmentProp;
	private String EmbryoProp;
	private String ID_Catches;
	
	private List<File> Photo;					//文件引用
	private List<String> PhotoFileName;			//文件名字
	private List<String> PhotoContentType;		//文件类型
	private String isNull;

	
	private String deletePhoto;
	private String NodeName;
	
	private PrintWriter writer = null;
	
	private DBConnection db_connection = null;
	
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
		writer = ServletActionContext.getResponse().getWriter();
		db_connection = DBConnection.getInstance();
		if(Diameter != null && Diameter.equals("")) {Diameter="0";}
		if(EMDiameter != null && EMDiameter.equals("")) {EMDiameter="0";}
		if(Period != null && Period.equals("")) {
			writer.write("null");
			writer.flush();
			writer.close();
		}
		else {
			if(flag.equals("insert")){
				//插入操作
				insert();
                LogTool.insertIntoDataLog(LogTool.INSERT_CODE, "FishEggs", 1);
			}else if(flag.equals("update")){
				//更新操作
				update();
                LogTool.insertIntoDataLog(LogTool.UPDATE_CODE, "FishEggs", 1);
            }
		}
		if(flag.equals("delete")){
            delete();
            LogTool.insertIntoDataLog(LogTool.DELETE_CODE, "FishEggs", 1);
        }else if(flag.equals("getAllPhoto")){
			PATH = UpLoadPicture.getAllPhoto(NodeName);
			writer.write(PATH);
		}
		return null;
	}
	
	private void delete(){
		
	    PATH = UpLoadPicture.Delete(NodeName,deletePhoto);
	    String update = "update FishEggs set Photo='"
				+ PATH + "' where SampleID='" + NodeName + "'";
		System.out.println(update);
		Statement statement = null;
		try {
			statement = db_connection.getStatement();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			statement.executeUpdate(update);
			writer.write(PATH);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			writer.write("error");
			System.out.println("--网具更新失败--");
			e.printStackTrace();
		} finally{
			try {
				db_connection.close(statement);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				System.out.println("网具更新操作关闭失败");
				e.printStackTrace();
			}
		}
		
	}
	
	private void update(){
		//获取照片路径
		if(isNull.length()!=0)
		PATH = UpLoadPicture.upload(Photo, PhotoFileName, SampleID);
		if(PATH.equals("photo_error")){			//照片出错
			writer.write("photo_error");
		}else{
			String update="";
			if(isNull.length()!=0){
		         update = "update FishEggs set Photo='" + PATH + "',Period='" + Period
					+ "',Diameter='" + Diameter + "',EMDiameter='" + EMDiameter + "',PigmentProp='"
					+ PigmentProp + "',EmbryoProp='" + EmbryoProp + "' where SampleID='" + SampleID + "'";
			}else{
				update = "update FishEggs set Period='" + Period
						+ "',Diameter='" + Diameter + "',EMDiameter='" + EMDiameter + "',PigmentProp='"
						+ PigmentProp + "',EmbryoProp='" + EmbryoProp + "' where SampleID='" + SampleID + "'";
			}
			
			Statement statement = null;
			try {
				statement = db_connection.getStatement();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			
			try {
				statement.executeUpdate(update);
				writer.write(PATH);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				writer.write("error");
				System.out.println("--卵样本更新失败--");
				e.printStackTrace();
			} finally{
				try {
					db_connection.close(statement);
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					System.out.println("卵样本更新操作关闭失败");
					e.printStackTrace();
				}
			}
		}
	}
	
	private void insert(){
		String childID = START + TimeFormat.getNowTime();
		//获取照片路径
		if(isNull.length()!=0)
		PATH = UpLoadPicture.upload(Photo, PhotoFileName, childID);
		if(PATH.equals("photo_error")){			//照片出错
			writer.write("photo_error");
		}else{
			String insert = "insert into FishEggs values(?,?,?,?,?,?,?,?)";
			
			PreparedStatement preparedStatement = null;
			try {
				preparedStatement = db_connection.getPreparedStatement(insert);
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			try {
				preparedStatement = db_connection.getPreparedStatement(insert);
				preparedStatement.setString(1, childID);
				preparedStatement.setString(2, PATH);
				preparedStatement.setString(3, Period);
				preparedStatement.setString(4, Diameter);
				preparedStatement.setString(5, EMDiameter);
				preparedStatement.setString(6, PigmentProp);
				preparedStatement.setString(7, EmbryoProp);
				preparedStatement.setString(8, ID_Catches);
				
				preparedStatement.executeUpdate();
				
				writer.write(childID);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				writer.write("error");
				System.out.println("--卵样本插入错误--");
				e.printStackTrace();
			}finally{
				try {
					db_connection.close(preparedStatement);
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					System.out.println("卵样本插入操作关闭失败");
					e.printStackTrace();
				}
			}
		}
	}
	
	public List<File> getPhoto() {
		return Photo;
	}

	public void setPhoto(List<File> photo) {
		Photo = photo;
	}

	public List<String> getPhotoFileName() {
		return PhotoFileName;
	}

	public void setPhotoFileName(List<String> photoFileName) {
		PhotoFileName = photoFileName;
	}

	public List<String> getPhotoContentType() {
		return PhotoContentType;
	}

	public void setPhotoContentType(List<String> photoContentType) {
		PhotoContentType = photoContentType;
	}

	public String getPeriod() {
		return Period;
	}
	public void setPeriod(String period) {
		Period = period;
	}
	public String getDiameter() {
		return Diameter;
	}
	public void setDiameter(String diameter) {
		Diameter = diameter;
	}
	public String getEMDiameter() {
		return EMDiameter;
	}
	public void setEMDiameter(String eMDiameter) {
		EMDiameter = eMDiameter;
	}
	public String getPigmentProp() {
		return PigmentProp;
	}
	public void setPigmentProp(String pigmentProp) {
		PigmentProp = pigmentProp;
	}
	public String getEmbryoProp() {
		return EmbryoProp;
	}
	public void setEmbryoProp(String embryoProp) {
		EmbryoProp = embryoProp;
	}
	public String getID_Catches() {
		return ID_Catches;
	}
	public void setID_Catches(String iD_Catches) {
		ID_Catches = iD_Catches;
	}

	public String getFlag() {
		return flag;
	}

	public void setFlag(String flag) {
		this.flag = flag;
	}

	public String getSampleID() {
		return SampleID;
	}

	public void setSampleID(String sampleID) {
		SampleID = sampleID;
	}
	public String getDeletePhoto(){
		return deletePhoto;
	}
	
	public void setDeletePhoto(String deletePhoto){
		this.deletePhoto=deletePhoto;
	}
	
	public String getNodeName(){
		return NodeName;
	}
	
	public void setNodeName(String NodeName){
		this.NodeName=NodeName;
	}
	
	public String getIsNull(){
		return isNull;
	}
	
	public void setIsNull(String isNull){
		this.isNull=isNull;
	}
	
}
